package homework.test7;
/*
请编写程序，不使用任何同步技术，
模拟三个窗口同时卖100张票的情况，
运行并打印结果，观察到错误的数据，
并解释出现错误的原因。
 */
public class Demo7 {
    public static void main(String[] args) {
        MyThread7 m = new MyThread7();

        Thread mt1 = new Thread(m);
        Thread mt2 = new Thread(m);
        Thread mt3 = new Thread(m);

        mt1.setName("窗口一");
        mt2.setName("窗口二");
        mt3.setName("窗口三");

        mt1.start();
        mt2.start();
        mt3.start();
        /*
        多线程在执行每一行代码的时候，其执行权都有可能被抢走
        票数相同就是如此。
        窗口一或三一开始得到了cpu的执行权，运行到ticket--时执行权被抢走，此时ticket为99；
        第二次运行到ticket--时又被抢走，此时ticket为98
        然后窗口二获得执行权，这次没有被抢走，ticket变为97，并成功输出。
        这是窗口一和矿口三也获得了执行权，获得了了ticket（97），然后执行权再被抢走；
        直到第五次输出窗口三成功抢到执行权，并输出ticket97；
        然后窗口一抢到执行权，并输出ticket97。
         */
    }
}
